const jwt=require('jsonwebtoken')

async function check(ctx, next){
  let url = ctx.request.url
  // 如果是登陆页面和注册页面或者特定不校验token的接口就不验证token
  if (url === '/login' || ctx.request.method == 'GET') {
      await next()
  } else {
      // 否则获取到token
      let token = ctx.request.headers["authorization"].slice(7)
      if (token) {
          // 如果有token的话就开始解析
          const tokenItem = jwt.verify(token, 'token')
          // 将token的创建的时间和过期时间结构出来
          const { useId, time, timeout } = tokenItem
          // 拿到当前的时间
          let data = new Date().getTime();
          // 判断一下如果当前时间减去token创建时间小于或者等于token过期时间，说明还没有过期，否则过期
          if (data-time <= timeout) {
              await next()
          } else {
              ctx.body = {
                  code: '405',
                  msg:'token 已过期，请重新登陆'
              }  
          }
      }
  }
}

module.exports = check